! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! 
! The Reaction Rates File
! 
! Generated by KPP-2.2.3 symbolic chemistry Kinetics PreProcessor
!       (http://www.cs.vt.edu/~asandu/Software/KPP)
! KPP is distributed under GPL, the general public licence
!       (http://www.gnu.org/copyleft/gpl.html)
! (C) 1995-1997, V. Damian & A. Sandu, CGRER, Univ. Iowa
! (C) 1997-2005, A. Sandu, Michigan Tech, Virginia Tech
!     With important contributions from:
!        M. Damian, Villanova University, USA
!        R. Sander, Max-Planck Institute for Chemistry, Mainz, Germany
! 
! File                 : aromatics_kpp_Rates.f90
! Time                 : Thu Dec 17 19:43:15 2020
! Working directory    : /n/home08/kbates/Aromatics/MOZART_chamber
! Equation file        : aromatics_kpp.kpp
! Output root filename : aromatics_kpp
! 
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



MODULE aromatics_kpp_Rates

  USE aromatics_kpp_Parameters
  USE aromatics_kpp_Global
  IMPLICIT NONE

CONTAINS



! Begin Rate Law Functions from KPP_HOME/util/UserRateLaws

!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!  User-defined Rate Law functions
!  Note: the default argument type for rate laws, as read from the equations file, is single precision
!        but all the internal calculations are performed in double precision
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

!~~~>  Arrhenius
   REAL(kind=dp) FUNCTION ARR( A0,B0,C0 )
      REAL A0,B0,C0      
      ARR =  DBLE(A0) * EXP(-DBLE(B0)/TEMP) * (TEMP/300.0_dp)**DBLE(C0)
   END FUNCTION ARR        

   REAL(kind=dp) FUNCTION TUN( A0,B0,C0 )
      REAL A0,B0,C0      
      TUN =  DBLE(A0) * EXP(DBLE(B0)/TEMP) * EXP(DBLE(C0)/TEMP**3)
   END FUNCTION TUN

   REAL(kind=dp) FUNCTION ISO1( A0,B0,C0,D0,E0,F0,G0 )
      REAL A0,B0,C0,D0,E0,F0,G0
      REAL(kind=dp) K0, K1, K2
      K0 = DBLE(D0)*EXP(DBLE(E0)/TEMP)*EXP(1.E8/TEMP**3)
      K1 = DBLE(F0)*EXP(DBLE(G0)/TEMP)
      K2 = DBLE(C0)*K0/(K0+K1)
      ISO1 =  DBLE(A0) * EXP(DBLE(B0)/TEMP) * (1.-K2)
   END FUNCTION ISO1

   REAL(kind=dp) FUNCTION ISO2( A0,B0,C0,D0,E0,F0,G0 )
      REAL A0,B0,C0,D0,E0,F0,G0
      REAL(kind=dp) K0, K1, K2
      K0 = DBLE(D0)*EXP(DBLE(E0)/TEMP)*EXP(1.E8/TEMP**3)
      K1 = DBLE(F0)*EXP(DBLE(G0)/TEMP)
      K2 = DBLE(C0)*K0/(K0+K1)
      ISO2 =  DBLE(A0) * EXP(DBLE(B0)/TEMP) * K2
   END FUNCTION ISO2

   REAL(kind=dp) FUNCTION ARRPLUS( A0,B0,C0,D0,E0 )
      REAL A0,B0,C0,D0,E0 
      REAL(kind=dp) K0     
      K0 = DBLE(A0) * (DBLE(D0)+(TEMP*DBLE(E0)))
      ARRPLUS =  K0 * EXP(-DBLE(B0)/TEMP) * (TEMP/300.0_dp)**DBLE(C0)
      IF (ARRPLUS < 0.0) ARRPLUS = 0.0
   END FUNCTION ARRPLUS

   REAL(kind=dp) FUNCTION TUNPLUS( A0,B0,C0,D0,E0 )
      REAL A0,B0,C0,D0,E0
      REAL(kind=dp) K0
      K0 = DBLE(A0) * (DBLE(D0)+(TEMP*DBLE(E0)))
      TUNPLUS = K0 * EXP(DBLE(B0)/TEMP) * EXP(DBLE(C0)/TEMP**3)
      IF (TUNPLUS < 0.0) TUNPLUS = 0.0
   END FUNCTION TUNPLUS

!~~~> Simplified Arrhenius, with two arguments
!~~~> Note: The argument B0 has a changed sign when compared to ARR
   REAL(kind=dp) FUNCTION ARR2( A0,B0 )
      REAL A0,B0           
      ARR2 =  DBLE(A0) * EXP( DBLE(B0)/TEMP )              
   END FUNCTION ARR2          

   REAL(kind=dp) FUNCTION EP2(A0,C0,A2,C2,A3,C3)
      REAL A0,C0,A2,C2,A3,C3
      REAL(kind=dp) K0,K2,K3            
      K0 = DBLE(A0) * EXP(-DBLE(C0)/TEMP)
      K2 = DBLE(A2) * EXP(-DBLE(C2)/TEMP)
      K3 = DBLE(A3) * EXP(-DBLE(C3)/TEMP)
      K3 = K3*CFACTOR*1.0E6_dp
      EP2 = K0 + K3/(1.0_dp+K3/K2 )
   END FUNCTION EP2

   REAL(kind=dp) FUNCTION EP3(A1,C1,A2,C2) 
      REAL A1, C1, A2, C2
      REAL(kind=dp) K1, K2      
      K1 = DBLE(A1) * EXP(-DBLE(C1)/TEMP)
      K2 = DBLE(A2) * EXP(-DBLE(C2)/TEMP)
      EP3 = K1 + K2*(1.0E6_dp*CFACTOR)
   END FUNCTION EP3 

   REAL(kind=dp) FUNCTION EPO(A1,E1,M1)
      REAL A1, E1, M1
      REAL(kind=dp) K1      
      K1 = 1.0_dp/(DBLE(M1) * CFACTOR + 1.0_dp)
      EPO = DBLE(A1) * EXP(DBLE(E1)/TEMP) *  K1
   END FUNCTION EPO

   REAL(kind=dp) FUNCTION KCO(A1,M1)
      REAL A1, M1
      KCO = DBLE(A1) * (1.0_dp + (CFACTOR / DBLE(M1)))
   END FUNCTION KCO

   REAL(kind=dp) FUNCTION FALL ( A0,B0,C0,A1,B1,C1,CF)
      REAL A0,B0,C0,A1,B1,C1,CF
      REAL(kind=dp) K0, K1     
      K0 = DBLE(A0) * EXP(-DBLE(B0)/TEMP)* (TEMP/300.0_dp)**DBLE(C0)
      K1 = DBLE(A1) * EXP(-DBLE(B1)/TEMP)* (TEMP/300.0_dp)**DBLE(C1)
      K0 = K0*CFACTOR*1.0E6_dp
      K1 = K0/K1
      FALL = (K0/(1.0_dp+K1))*   &
           DBLE(CF)**(1.0_dp/(1.0_dp+(LOG10(K1))**2))
   END FUNCTION FALL

   REAL(kind=dp) FUNCTION PAN ( A0,B0,C0,A1,B1,C1,CF)
      REAL A0,B0,C0,A1,B1,C1,CF
      REAL(kind=dp) K0, K1, KR, NC, F     
      K0 = DBLE(A0) * EXP(DBLE(B0)/TEMP) * (TEMP/300.0_dp)**DBLE(C0)
      K1 = DBLE(A1) * EXP(DBLE(B1)/TEMP) * (TEMP/300.0_dp)**DBLE(C1)
      K0 = K0*CFACTOR
      KR = K0/K1
      NC = 0.75_dp-1.27_dp*(LOG10(DBLE(CF)))
      F  = 10.0_dp**(LOG10(DBLE(CF))/(1+(LOG10(KR)/NC)**2))
      PAN = K0*K1*F/(K0+K1)
   END FUNCTION PAN

   REAL(kind=dp) FUNCTION VILA ( A0,B0,C0,A1,B1,C1)
      REAL A0,B0,C0,A1,B1,C1
      REAL(kind=dp) K0, K1     
      K0 = DBLE(A0) * EXP(DBLE(B0)/TEMP) * (TEMP/300.0_dp)**DBLE(C0)
      K1 = DBLE(A1) * EXP(DBLE(B1)/TEMP) * (TEMP/300.0_dp)**DBLE(C1)
      K0 = K0*CFACTOR
      VILA = K0*K1*0.35_dp/(K0+K1)
   END FUNCTION VILA

   REAL(kind=dp) FUNCTION NIT ( A0,B0,C0,n,X0,Y0)
      REAL A0,B0,C0,n,X0,Y0
      REAL(kind=dp) K0, K1, K2, K3, K4     
      K0 = 2.0E-22_dp * EXP(DBLE(n))
      K1 = 4.3E-1_dp*(TEMP/298.0_dp)**(-8)
      K0 = K0*CFACTOR
      K1 = K0/K1
      K2 = (K0/(1.0_dp+K1))*   &
           4.1E-1_dp**(1.0_dp/(1.0_dp+(LOG10(K1))**2))
      K3 = K2/(K2+DBLE(C0))
      K4 = DBLE(A0)*(DBLE(X0)-TEMP*DBLE(Y0))
      NIT = K4 * EXP(DBLE(B0)/TEMP) * K3
   END FUNCTION NIT

   REAL(kind=dp) FUNCTION ALK ( A0,B0,C0,n,X0,Y0)
      REAL A0,B0,C0,n,X0,Y0
      REAL(kind=dp) K0, K1, K2, K3, K4  
      K0 = 2.0E-22_dp * EXP(DBLE(n))
      K1 = 4.3E-1_dp*(TEMP/298.0_dp)**(-8)
      K0 = K0*CFACTOR
      K1 = K0/K1
      K2 = (K0/(1.0_dp+K1))*   &
           4.1E-1_dp**(1.0_dp/(1.0_dp+(LOG10(K1))**2))
      K3 = DBLE(C0)/(K2+DBLE(C0))
      K4 = DBLE(A0)*(DBLE(X0)-TEMP*DBLE(Y0))
      ALK = K4 * EXP(DBLE(B0)/TEMP) * K3
   END FUNCTION ALK

   REAL(kind=dp) FUNCTION EXTARR ( A0,B0,C0 )
      REAL A0,B0,C0      
      EXTARR =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (TEMP/300.0_dp)**DBLE(B0)
   END FUNCTION EXTARR

   REAL(kind=dp) FUNCTION IEMISS ( A0,B0,C0 )
      REAL A0,B0,C0 
      REAL(kind=dp) CT, CD, CL, BS, AT
      AT = DBLE(A0) * 8.314_dp * TEMP
      BS = DBLE(B0) * SUN
      CL = 2.88E-3_dp*BS/((1.0_dp+7.29E-6_dp*BS**2.0_dp)**0.5_dp)
      CT = EXP(9.5E+4_dp*(TEMP-DBLE(A0))/AT)
      CD = 1 + EXP(2.3E+5_dp*(TEMP-3.14E+2_dp)/AT)
      IEMISS = DBLE(C0) * CT * CL / CD
   END FUNCTION IEMISS

   REAL(kind=dp) FUNCTION MCMHV ( A0,B0,C0 )
      REAL A0,B0,C0
      IF (SUN.GT.0) THEN
         MCMHV = DBLE(A0) * SUN**DBLE(B0) * EXP(-DBLE(C0)/SUN)
      ELSE
         MCMHV = 0.0
      ENDIF
   END FUNCTION MCMHV

  !---------------------------------------------------------------------------

  ELEMENTAL REAL(kind=dp) FUNCTION k_3rd(temp,cair,k0_300K,n,kinf_300K,m,fc)

    INTRINSIC LOG10

    REAL(kind=dp), INTENT(IN) :: temp      ! temperature [K]
    REAL(kind=dp), INTENT(IN) :: cair      ! air concentration [molecules/cm3]
    REAL, INTENT(IN) :: k0_300K   ! low pressure limit at 300 K
    REAL, INTENT(IN) :: n         ! exponent for low pressure limit
    REAL, INTENT(IN) :: kinf_300K ! high pressure limit at 300 K
    REAL, INTENT(IN) :: m         ! exponent for high pressure limit
    REAL, INTENT(IN) :: fc        ! broadening factor (usually fc=0.6)
    REAL(kind=dp) :: zt_help, k0_T, kinf_T, k_ratio

    zt_help = 300._dp/temp
    k0_T    = k0_300K   * zt_help**(n) * cair ! k_0   at current T
    kinf_T  = kinf_300K * zt_help**(m)        ! k_inf at current T
    k_ratio = k0_T/kinf_T
    k_3rd   = k0_T/(1._dp+k_ratio)*fc**(1._dp/(1._dp+LOG10(k_ratio)**2))

  END FUNCTION k_3rd

  !---------------------------------------------------------------------------

  ELEMENTAL REAL(kind=dp) FUNCTION k_arr (k_298,tdep,temp)
    ! Arrhenius function

    REAL,     INTENT(IN) :: k_298 ! k at T = 298.15K
    REAL,     INTENT(IN) :: tdep  ! temperature dependence
    REAL(kind=dp), INTENT(IN) :: temp  ! temperature

    INTRINSIC EXP

    k_arr = k_298 * EXP(tdep*(1._dp/temp-3.3540E-3_dp)) ! 1/298.15=3.3540e-3

  END FUNCTION k_arr

  REAL(kind=dp) FUNCTION OH_O1D (J, H2O, TEMP, CFACTOR)
  REAL*8 J, H2O, TEMP, CFACTOR
  REAL*8 K1, K2, K3
  REAL*8 N2, O2

  N2=0.79d0
  O2=0.21d0

  K1=1.63d-10*exp(60d0/TEMP)
  K2=2.15d-11*exp(110d0/TEMP)
  K3=3.30d-11*exp(55d0/TEMP)

  OH_O1D=J*K1*H2O/(K1*H2O+K2*N2*CFACTOR+K3*O2*CFACTOR)
  END FUNCTION OH_O1D

  REAL(kind=dp) FUNCTION HO2_H2O(H2O,TEMP)
  REAL*8 TEMP, H2O
  HO2_H2O=1+1.4D-21*H2O*EXP(2200/TEMP)
  END FUNCTION HO2_H2O

  REAL(kind=dp) FUNCTION GCARR( A0,B0,C0 )
      REAL A0,B0,C0
      GCARR =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
  END FUNCTION GCARR

  REAL(kind=dp) FUNCTION GC_HO2NO3( A0,B0,C0,A1,B1,C1 )
      REAL A0,B0,C0,A1,B1,C1
      REAL(kind=dp) :: R0,R1
      R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
      R1 =  DBLE(A1) * EXP(DBLE(C1)/TEMP) * (300._dp/TEMP)**DBLE(B1)

      GC_HO2NO3 = (R0+R1*CFACTOR)*(1.D0+1.4E-21_dp*CFACTOR*1.0E-2_dp &
                   * EXP(2200.E+0_dp/TEMP))
  END FUNCTION GC_HO2NO3

  REAL(kind=dp) FUNCTION GC_TBRANCH( A0,B0,C0,A1,B1,C1 )
! Temperature Dependent Branching Ratio                                                                                                     
      REAL A0,B0,C0,A1,B1,C1
      REAL(kind=dp) :: R0,R1
      R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
      R1 =  DBLE(A1) * EXP(DBLE(C1)/TEMP) * (300._dp/TEMP)**DBLE(B1)

      GC_TBRANCH = R0/(1.D0+R1)

  END FUNCTION GC_TBRANCH

  REAL(kind=dp) FUNCTION GC_RO2HO2( A0,B0,C0,A1,B1,C1 )
! Carbon Dependence of RO2+HO2                                                                                                              
      REAL A0,B0,C0,A1,B1,C1
      REAL(kind=dp) :: R0,R1
      R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
      R1 =  DBLE(A1) * EXP(DBLE(C1)/TEMP) * (300._dp/TEMP)**DBLE(B1)

      GC_RO2HO2 = R0*(1E0-EXP(-0.245E0*R1))

  END FUNCTION GC_RO2HO2

  REAL(kind=dp) FUNCTION GC_DMSOH( A0,B0,C0,A1,B1,C1 )
! DMS+OH+O2                                                                                                                                 
    REAL A0,B0,C0,A1,B1,C1
    REAL(kind=dp) :: R0,R1
    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    R1 =  DBLE(A1) * EXP(DBLE(C1)/TEMP) * (300._dp/TEMP)**DBLE(B1)
!    GC_DMSOH = R0/(1e0_dp+R1*0.2095e0_dp)                                                                                                  
    GC_DMSOH = (R0*CFACTOR*0.2095e0_dp)/(1e0_dp+R1*0.2095e0_dp)

  END FUNCTION GC_DMSOH

  REAL(kind=dp) FUNCTION GC_GLYXNO3( A0,B0,C0 )
! ---  K = K1*([O2]+3.5D18)/(2*[O2]+3.5D18) --- HO2+2*CO branch of GLYX+OH/NO3                                                              
    REAL A0,B0,C0
    REAL(kind=dp) R0
    REAL(kind=dp) O2

    O2 = CFACTOR*0.2095e0_dp
    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    GC_GLYXNO3 = R0*(O2+3.5E+18_dp)/(2.E+0_dp*O2+3.5E+18_dp)

  END FUNCTION GC_GLYXNO3

  REAL(kind=dp) FUNCTION GC_OHHNO3( A0,B0,C0,A1,B1,C1,A2,B2,C2 )
! ---  OH + HNO3:   K = K0 + K3[M] / (1 + K3[M]/K2)  ------                                                                                 
    REAL A0,B0,C0,A1,B1,C1,A2,B2,C2
    REAL(kind=dp) R0,R1,R2
    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    R1 =  DBLE(A1) * EXP(DBLE(C1)/TEMP) * (300._dp/TEMP)**DBLE(B1)
    R2 =  CFACTOR*(DBLE(A2) * EXP(DBLE(C2)/TEMP) * (300._dp/TEMP)**DBLE(B2))
    GC_OHHNO3 = R0 + R2/(1.E0_dp + R2/R1)

  END FUNCTION GC_OHHNO3

  REAL(kind=dp) FUNCTION GC_GLYCOHA( A0,B0,C0 )
!                                                                                                                                           
    REAL A0,B0,C0,R0,GLYC_FRAC
    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    GLYC_FRAC=1e+0_dp-11.0729e+0_dp*EXP(-(1._dp/73._dp)*TEMP)
    IF (GLYC_FRAC<0e+0_dp) GLYC_FRAC=0e+0_dp
    GC_GLYCOHA=R0*GLYC_FRAC

  END FUNCTION GC_GLYCOHA

  REAL(kind=dp) FUNCTION GC_GLYCOHB( A0,B0,C0 )
!                                                                                                                                           
    REAL A0,B0,C0
    REAL(kind=dp) :: R0,GLYC_FRAC
    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    GLYC_FRAC=1e+0_dp-11.0729e+0_dp*EXP(-(1._dp/73._dp)*TEMP)
    IF (GLYC_FRAC<0e+0_dp) GLYC_FRAC=0e+0_dp
    GC_GLYCOHB=R0*(1e0_dp-GLYC_FRAC)

  END FUNCTION GC_GLYCOHB

  REAL(kind=dp) FUNCTION GC_HACOHA( A0,B0,C0 )
!                                                                                                                                           
    REAL A0,B0,C0
    REAL(kind=dp) :: R0,HAC_FRAC
    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    HAC_FRAC=1e+0_dp-23.7e+0_dp*EXP(-(1._dp/60._dp)*TEMP)
    IF (HAC_FRAC<0e+0_dp) HAC_FRAC=0e+0_dp
    GC_HACOHA=R0*HAC_FRAC

  END FUNCTION GC_HACOHA

  REAL(kind=dp) FUNCTION GC_HACOHB( A0,B0,C0 )
!                                                                                                                                           
    REAL A0,B0,C0
    REAL(kind=dp) :: R0,HAC_FRAC
    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    HAC_FRAC=1e+0_dp-23.7e+0_dp*EXP(-(1._dp/60._dp)*TEMP)
    IF (HAC_FRAC<0e+0_dp) HAC_FRAC=0e+0_dp
    GC_HACOHB=R0*(1.E0_dp-HAC_FRAC)

  END FUNCTION GC_HACOHB

  REAL(kind=dp) FUNCTION GC_OHCO( A0,B0,C0 )

    REAL A0,B0,C0,R0
    REAL KLO1,KLO2,KHI1,KHI2,XYRAT1,XYRAT2,BLOG1,BLOG2,FEXP1,FEXP2
    REAL KCO1,KCO2,KCO

    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    R0 = R0 * (1.E+0_dp + 0.6e+0_dp*9.871E7_dp)

    ! new OH+CO rate from JPL2006.                                                                                                          
    KLO1=5.9E-33_dp*(300._dp/TEMP)**(1.E+0_dp)
    KHI1=1.1E-12_dp*(300._dp/TEMP)**(-1.3E0_dp)
    XYRAT1=KLO1*CFACTOR/KHI1
    BLOG1=LOG10(XYRAT1)
    FEXP1=1.E+0_dp/(1.E+0_dp+BLOG1*BLOG1)
    KCO1=KLO1*CFACTOR*0.6**FEXP1/(1.e+0_dp+XYRAT1)
    KLO2=1.5E-13_dp*(300._dp/TEMP)**(0.E+0_dp)
    KHI2=2.1e+09_dp *(300._dp/TEMP)**(-6.1E+0_dp)
    XYRAT2=KLO2*CFACTOR/KHI2
    BLOG2=LOG10(XYRAT2)
    FEXP2=1.E+0_dp/(1.E+0_dp+BLOG2*BLOG2)
    KCO2=KLO2*0.6**FEXP2/(1.e+0_dp+XYRAT2)
    KCO=KCO1+KCO2
    GC_OHCO=KCO

  END FUNCTION GC_OHCO

  REAL(kind=dp) FUNCTION GC_RO2NO( B,A0,B0,C0,A1,B1,C1 )
    ! ---  K = K1*(1-FYRNO3(K2,M,T))  ---  abstraction branch of RO2+NO                                                                     
    CHARACTER(*) B !Branch Toggle                                                                                                           
    REAL A0,B0,C0,A1,B1,C1
    REAL(kind=dp) :: R0,R1
    REAL(kind=dp) :: YYYN, XXYN,  AAA,  RARB, ZZYN
    REAL(kind=dp) :: XF, ALPHA, Y300, BETA, XMINF, XM0
    REAL(kind=dp) :: FYRNO3
    Y300 = 0.826
    ALPHA= 1.94e-22
    BETA = 0.97
    XM0  = 0.
    XMINF= 8.1
    XF   = 0.411

    R0 =  DBLE(A0) * EXP(DBLE(C0)/TEMP) * (300._dp/TEMP)**DBLE(B0)
    R1 =  DBLE(A1) * EXP(DBLE(C1)/TEMP) * (300._dp/TEMP)**DBLE(B1)

    ! Initialize static variables                                                                                                           

    XXYN   = ALPHA*EXP(BETA*R1)*CFACTOR*((300./TEMP)**XM0)
    YYYN   = Y300*((300./TEMP)**XMINF)
    AAA    = LOG10(XXYN/YYYN)
    ZZYN   = 1./(1.+ AAA*AAA )
    RARB   = (XXYN/(1.+ (XXYN/YYYN)))*(XF**ZZYN)
    FYRNO3 = RARB/(1. + RARB)
    IF (trim(B) .eq. 'A') THEN
       GC_RO2NO     = R0 * FYRNO3
    ELSEIF (trim(B) .eq. 'B') THEN
       GC_RO2NO     = R0 * (1.E+0_dp - FYRNO3)
    ENDIF

  END FUNCTION GC_RO2NO

  REAL(kind=dp) FUNCTION GCJPL3( k0_300, n, ki_300, m)
!  Functions given in JPL Booklet                                                                                                           
      REAL k0_300, n, ki_300,m
      REAL k0, ki

      k0=k0_300*((TEMP/300.d0)**(-n))
      ki=ki_300*((TEMP/300.d0)**(-m))

!      GCJPL3=(k0*CFACTOR)/(1+k0*CFACTOR/ki)*0.6** &                                                                                          
!       ((1+((LOG10(k0*CFACTOR/ki))**2d0)**-1.0d0))                                                                                          
      GCJPL3=(k0/(1.d0+k0/(ki/CFACTOR)))*0.6** &
        ((1+((log10(k0/(ki/CFACTOR)))**2d0)**1.0e0))
      GCJPL3=GCJPL3*CFACTOR
  END FUNCTION GCJPL3

  REAL(kind=dp) FUNCTION GCJPLEQ( A0,B0,C0,A1,B1,C1,A2,B2,C2,FV,FCT1,FCT2 )
 ! Function calculates the rate constant of the forward reaction                                                                            
 ! calculates the equilibrium constant                                                                                                      
 ! Find the backwards reaction by K=kforward/kbackwards                                                                                     
       REAL A0,B0,C0,A1,B1,C1
       REAL(kind=dp) :: R0,R1
       REAL, OPTIONAL :: A2,B2,C2,FV,FCT1,FCT2 !If a P-dependent rxn                                                                        

       ! Calculate Backwards reaction                                                                                                       
       R0 = GCARR( A0,B0,C0 )

       ! Calculate forwards reaction                                                                                                        
       IF (present(A2)) THEN ! P-dependent                                                                                                  
          IF (present(B2) .and. present(C2) .and. present(FV) &
                          .and. present(FCT1) .and. present(FCT2)) THEN
             R1 = GCJPLPR( A1,B1,C1,A2,B2,C2,FV,FCT1,FCT2)
          ELSE ! Missing params!                                                                                                            
             write(*,'(a)') 'GCJPLEQ: Missing parameters for P-dependent reaction.'
             write(*,'(a)') 'GCJPLEQ: Returning zero'
             GCJPLEQ = 0.E0
             RETURN
          ENDIF
       ELSE
          R1 = gcarr( A1,B1,C1 ) !Std. Arrhenius eqn.                                                                                       
       ENDIF

       GCJPLEQ=R1/R0
  END FUNCTION GCJPLEQ

  REAL(kind=dp) FUNCTION GCJPLPR(A0,B0,C0,A1,B1,C1,FV,FCT1,FCT2)
! * PRESSURE-DEPENDENT EFFECTS                                                                                                              
! * ADD THE THIRD BODY EFFECT FOR PRESSURE DEPENDENCE OF RATE                                                                               
! * COEFFICIENTS.                                                                                                                           
! A0 B0, & C0 are the Arrhenius parameters for the lower-limit                                                                              
! rate. A1, B1 & C1 are the upper-limit parameters.                                                                                         
! FV is the falloff curve paramter, (SEE ATKINSON ET. AL (1992)                                                                             
! J. PHYS. CHEM. REF. DATA 21, P. 1145). USUALLY = 0.6                                                                                      
!                                                                                                                                           
       REAL A0,B0,C0,A1,B1,C1,FV,FCT1,FCT2
       REAL FCT,XYRAT,BLOG,RLOW,RHIGH,FEXP

       RLOW  = GCARR( A0,B0,C0 )*CFACTOR
       RHIGH = GCARR( A1,B1,C1 )

       IF     (FCT2.NE.0.) THEN
             FCT            = EXP(-TEMP / FCT1) + EXP(-FCT2 / TEMP)
             XYRAT          = RLOW/RHIGH
             BLOG           = LOG10(XYRAT)
             FEXP           = 1.e+0_dp / (1.e+0_dp + BLOG * BLOG)
             GCJPLPR        = RLOW*FCT**FEXP/(1e+0_dp+XYRAT)
       ELSEIF (FCT1.NE.0.) THEN
             FCT            = EXP(-TEMP / FCT1)
             XYRAT          = RLOW/RHIGH
             BLOG           = LOG10(XYRAT)
             FEXP           = 1.e+0_dp / (1.e+0_dp + BLOG * BLOG)
             GCJPLPR        = RLOW*FCT**FEXP/(1e+0_dp+XYRAT)
       ELSE
             XYRAT          = RLOW/RHIGH
             BLOG           = LOG10(XYRAT)
             FEXP           = 1.e+0_dp / (1.e+0_dp + BLOG * BLOG)
             GCJPLPR        = RLOW*FV**FEXP/(1e+0_dp+XYRAT)
       ENDIF


  END FUNCTION GCJPLPR

  REAL(kind=dp) FUNCTION GCIUPAC3(ko_300,n,ki_300,m,Fc)
! Function calcualtes the rate constant of 3 body reaction using IUPAC                                                                      
! methology                                                                                                                                 
  REAL ko_300,n,ki_300,m,Fc
  REAL ko, ki, F, NN

  ko=ko_300*((TEMP/300.e0)**n)*CFACTOR
  ki=ki_300*((TEMP/300.e0)**m)

  NN=0.75-1.27*LOG10(Fc)
  F=10.0**(LOG10(Fc)/(1.0e0+(LOG10(ko/ki)/NN)**2.0))


  GCIUPAC3=ko/(1+ko/ki)*F
  END FUNCTION GCIUPAC3


!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!  End of User-defined Rate Law functions
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

! End Rate Law Functions from KPP_HOME/util/UserRateLaws


! Begin INLINED Rate Law Functions


! End INLINED Rate Law Functions

! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! 
! Update_SUN - update SUN light using TIME
!   Arguments :
! 
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  SUBROUTINE Update_SUN()
    SUN = 5.0e+1_dp/1.0e+1_dp
 END SUBROUTINE Update_SUN

! End of Update_SUN function
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! 
! Update_RCONST - function to update rate constants
!   Arguments :
! 
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SUBROUTINE Update_RCONST ( )




! Begin INLINED RCONST


! End INLINED RCONST

  RCONST(1) = (7.45E4*(TEMP/300.)**-2.6)
  RCONST(2) = (8.0E-12*EXP(-2060./TEMP))
  RCONST(3) = (PAN(1.0E-31,0.0,-1.6,5.0E-11,0.0,-0.3,0.85))
  RCONST(4) = (5.5E-12*EXP(188./TEMP))
  RCONST(5) = (PAN(1.3E-31,0.0,-1.5,2.3E-11,0.0,0.24,0.6))
  RCONST(6) = (1.68E8*EXP(67./TEMP)+3.95E8*EXP(130./TEMP))
  RCONST(7) = (1.4E-12*EXP(-1310./TEMP))
  RCONST(8) = (1.4E-13*EXP(-2470./TEMP))
  RCONST(9) = (1.7E-20*EXP(530./TEMP))
  RCONST(10) = (1.8E-11*EXP(110./TEMP))
  RCONST(11) = (4.50E-14*EXP(-1260./TEMP))
  RCONST(12) = (PAN(3.6E-30,0.0,-4.1,1.9E-12,0.0,0.2,0.35))
! RCONST(13) = constant rate coefficient
  RCONST(14) = (1.70E-12*EXP(-940./TEMP))
  RCONST(15) = (7.7E-12*EXP(-2100./TEMP))
  RCONST(16) = (2.9E-12*EXP(-160./TEMP))
  RCONST(17) = (2.03E-16*EXP(693./TEMP)*(TEMP/300.)**4.57)
  RCONST(18) = (4.8E-11*EXP(250./TEMP))
  RCONST(19) = ((1+(3.5E-4*EXP(2200./TEMP)))*(2.20E-13*EXP(600./TEMP)+4.75E-14*EXP(980./TEMP)))
  RCONST(20) = (PAN(7.4E-31,0.0,-2.4,3.3E-11,0.0,-0.3,0.81))
  RCONST(21) = (PAN(3.2E-30,0.0,-4.5,3.0E-11,0.0,0.0,0.41))
! RCONST(22) = constant rate coefficient
  RCONST(23) = (3.45E-12*EXP(270./TEMP))
  RCONST(24) = (PAN(1.4E-31,0.0,-3.1,4.0E-12,0.0,0.0,0.4))
  RCONST(25) = (3.2E-13*EXP(690./TEMP))
! RCONST(26) = constant rate coefficient
  RCONST(27) = (2.5E-12*EXP(260./TEMP))
  RCONST(28) = (2.4E-14*EXP(460./TEMP)+(1.625E-14*EXP(1335./TEMP))/(1+(602.*EXP(-864./TEMP))))
  RCONST(29) = (SUN*3.78E-5)
  RCONST(30) = (SUN*4.41E-4)
  RCONST(31) = (SUN*7.88E-6)
  RCONST(32) = (SUN*8.92E-3)
  RCONST(33) = (SUN*2.23E-2)
  RCONST(34) = (SUN*1.54E-1)
  RCONST(35) = (SUN*1.98E-3)
  RCONST(36) = (SUN*6.85E-7)
  RCONST(37) = (GCARR(8.50E-13,0.0E+00,-2450.0))
  RCONST(38) = (SUN*4.5E-5)
  RCONST(39) = (SUN*5.21E-6)
  RCONST(40) = (PAN(1.3E-3,-1.1E4,-3.5,9.7E14,-1.108E4,0.1,0.35))
  RCONST(41) = (PAN(4.1E-5,-10650.0,0.0,6.0E15,-11170.0,0.0,0.4))
  RCONST(42) = (GCARR(2.45E-12,0.0E+00,-1775.0))
  RCONST(43) = (GCARR(2.80E-12,0.0E+00,300.0))
  RCONST(44) = (GCARR(4.10E-13,0.0E+00,750.0))
  RCONST(45) = (GC_TBRANCH(9.50E-14,0.0E+00,390.0,2.62E1,0.0,-1130.0))
  RCONST(46) = (GC_TBRANCH(9.50E-14,0.0E+00,390.0,4.E-2,0.0,1130.0))
  RCONST(47) = (GCJPLPR(1.00E-30,4.8E+00,0.0,7.2E-12,2.1E0,0.0,0.6,0.0,0.0))
  RCONST(48) = (GCJPLPR(1.05E-02,4.8E+00,-11234.0,7.58E16,2.1E0,-11234.0,0.6,0.0,0.0))
  RCONST(49) = (GCARR(2.66E-12,0.0E+00,200.0))
  RCONST(50) = (GCARR(1.14E-12,0.0E+00,200.0))
  RCONST(51) = (GCARR(5.50E-12,0.0E+00,125.0))
  RCONST(52) = (GCARR(5.80E-16,0.0E+00,0.0))
  RCONST(53) = (GCARR(2.90E-12,0.0E+00,-345.0))
  RCONST(54) = (KCO(1.44E-13,4.2E19))
  RCONST(55) = (SUN*6.49E-6)
  RCONST(56) = (SUN*4.65E-5)
  RCONST(57) = (SUN*6.01E-5)
  RCONST(58) = (SUN*0.05*1.95E-4)
  RCONST(59) = (SUN*0.95*1.95E-4)
  RCONST(60) = (GCARR(2.66E-12,0.0E+00,200.0))
  RCONST(61) = (GCARR(1.14E-12,0.0E+00,200.0))
  RCONST(62) = (GCARR(4.00E-13,0.0E+00,0.0))
  RCONST(63) = (GCARR(4.63E-12,0.0E+00,350.0))
  RCONST(64) = (GCARR(1.40E-12,0.0E+00,-1900.0))
  RCONST(65) = (GCJPLPR(9.70E-29,5.6E+00,0.0,9.3E-12,1.5E0,0.0,0.6,0.0,0.0))
  RCONST(66) = (GCJPLEQ(9.30E-29,0.0E+00,14000.0,9.7E-29,5.6E0,0.0,9.3E-12,1.5E0,0.,0.6,0.,0.))
  RCONST(67) = (GCARR(8.10E-12,0.0E+00,270.0))
  RCONST(68) = (GCARR(7.66E-12,0.0E+00,-1020.0))
  RCONST(69) = (GCARR(2.60E-12,0.0E+00,365.0))
  RCONST(70) = (GC_TBRANCH(7.60E-12,0.0E+00,-585.0,5.87E0,0.64E0,-816.0))
  RCONST(71) = (GC_TBRANCH(7.60E-12,0.0E+00,-585.0,1.7E-1,-0.64E0,816.0))
  RCONST(72) = (GCARR(2.90E-12,0.0E+00,350.0))
  RCONST(73) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(74) = (GCARR(9.10E-12,0.0E+00,-405.0))
  RCONST(75) = (GC_RO2NO('B',2.70E-12,0.0E+00,350.0,4.5E0,0.0,0.0))
  RCONST(76) = (GC_RO2NO('A',2.70E-12,0.0E+00,350.0,4.5E0,0.0,0.0))
  RCONST(77) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(78) = (GCARR(2.80E-12,0.0E+00,300.0))
  RCONST(79) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(80) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(81) = (GCARR(4.07E+08,0.0E+00,-7694.0))
  RCONST(82) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(83) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(84) = (GCARR(2.90E+07,0.0E+00,-5297.0))
  RCONST(85) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(86) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(87) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(88) = (GCARR(2.30E-12,0.0E+00,0.0))
  RCONST(89) = (GCARR(3.15E-13,0.0E+00,-448.0))
  RCONST(90) = (GCARR(4.00E-12,0.0E+00,0.0))
  RCONST(91) = (GCARR(6.70E-12,0.0E+00,340.0))
  RCONST(92) = (GCJPLPR(9.00E-28,8.9E+00,0.0,7.7E-12,0.2,0.0,0.6,0.0,0.0))
  RCONST(93) = (GCARR(5.20E-13,0.0E+00,980.0))
  RCONST(94) = (GCARR(2.30E-12,0.0E+00,0.0))
  RCONST(95) = (GCARR(2.60E-12,0.0E+00,380.0))
  RCONST(96) = (GCARR(2.06E-13,0.0E+00,1300.0))
  RCONST(97) = (GCARR(2.00E-13,0.0E+00,0.0))
  RCONST(98) = (GCARR(4.15E-15,0.0E+00,-1520.0))
  RCONST(99) = (GCARR(7.48E-12,0.0E+00,410.0))
  RCONST(100) = (GCARR(2.60E-12,0.0E+00,380.0))
  RCONST(101) = (GCARR(2.06E-13,0.0E+00,1300.0))
  RCONST(102) = (GCARR(2.06E-13,0.0E+00,0.0))
  RCONST(103) = (GCARR(1.20E-12,0.0E+00,0.0))
  RCONST(104) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(105) = (GCARR(2.80E-12,0.0E+00,-3280.0))
  RCONST(106) = (GCARR(1.60E-12,0.0E+00,0.0))
  RCONST(107) = (GCARR(3.15E-14,0.0E+00,920.0))
  RCONST(108) = (GCARR(6.00E-12,0.0E+00,410.0))
  RCONST(109) = (GCJPLPR(9.00E-28,8.9E+00,0.0,7.7E-12,0.2,0.0,0.6,0.0,0.0))
  RCONST(110) = (GCJPLEQ(9.00E-29,0.0E+00,14000.0,9.00E-28,8.9E0,0.0,7.7E-12,0.2,0.,0.6,0.,0.))
  RCONST(111) = (GCJPLPR(9.00E-28,8.9E+00,0.0,7.7E-12,0.2,0.0,0.6,0.0,0.0))
  RCONST(112) = (GCJPLPR(9.00E-28,8.9E+00,0.0,7.7E-12,0.2,0.0,0.6,0.0,0.0))
  RCONST(113) = (GCJPLEQ(9.00E-29,0.0E+00,14000.0,9.00E-28,8.9E0,0.0,7.7E-12,0.2,0.,0.6,0.,0.))
  RCONST(114) = (GCJPLEQ(9.00E-29,0.0E+00,14000.0,9.00E-28,8.9E0,0.0,7.7E-12,0.2,0.,0.6,0.,0.))
  RCONST(115) = (GCARR(6.70E-12,0.0E+00,340.0))
  RCONST(116) = (GCARR(6.70E-12,0.0E+00,340.0))
  RCONST(117) = (GCARR(6.50E-15,0.0E+00,0.0))
  RCONST(118) = (1.33E-13+3.82E-11*exp(-2000.0_dp/TEMP))
  RCONST(119) = (GCARR(5.92E-13,0.0E+00,0.0))
  RCONST(120) = (GCARR(5.92E-13,0.0E+00,0.0))
  RCONST(121) = (GCARR(7.40E-13,0.0E+00,700.0))
  RCONST(122) = (GCARR(7.40E-13,0.0E+00,700.0))
  RCONST(123) = (GCARR(8.60E-13,0.0E+00,700.0))
  RCONST(124) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,4.0,0.0,0.0))
  RCONST(125) = (GCARR(2.06E-13,0.0E+00,1300.0))
  RCONST(126) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,4.0,0.0,0.0))
  RCONST(127) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,4.0,0.0,0.0))
  RCONST(128) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,4.0,0.0,0.0))
  RCONST(129) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,3.0,0.0,0.0))
  RCONST(130) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,5.0,0.0,0.0))
  RCONST(131) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,3.0,0.0,0.0))
  RCONST(132) = (GCARR(1.30E-12,0.0E+00,-25.0))
  RCONST(133) = (GCARR(3.00E-13,0.0E+00,0.0))
  RCONST(134) = (GCARR(8.00E-16,0.0E+00,0.0))
  RCONST(135) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(136) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(137) = (GCARR(7.50E-13,0.0E+00,500.0))
  RCONST(138) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(139) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(140) = (GCARR(2.30E-12,0.0E+00,0.0))
  RCONST(141) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(142) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(143) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(144) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(145) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(146) = (GCARR(1.30E-12,0.0E+00,0.0))
  RCONST(147) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(148) = (GCARR(3.35E-12,0.0E+00,0.0))
  RCONST(149) = (GCARR(4.60E-12,0.0E+00,70.0))
  RCONST(150) = (GCARR(4.10E-14,0.0E+00,0.0))
  RCONST(151) = (GCARR(2.70E-14,0.0E+00,0.0))
  RCONST(152) = (GCARR(7.40E-13,0.0E+00,700.0))
  RCONST(153) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,3.0,0.0,0.0))
  RCONST(154) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,3.0,0.0,0.0))
  RCONST(155) = (GCARR(5.20E-13,0.0E+00,980.0))
  RCONST(156) = (GCARR(4.30E-13,0.0E+00,1040.0))
  RCONST(157) = (GCARR(4.30E-13,0.0E+00,1040.0))
  RCONST(158) = (GCJPLPR(4.60E-27,4.0E+00,0.0,2.6E-11,1.3,0.0,0.5,0.0,0.0))
  RCONST(159) = (GCARR(5.50E-15,0.0E+00,-1880.0))
  RCONST(160) = (GCARR(2.90E-11,0.0E+00,0.0))
  RCONST(161) = (GCARR(3.00E-11,0.0E+00,0.0))
  RCONST(162) = (GCARR(8.20E-18,0.0E+00,0.0))
  RCONST(163) = (GCARR(3.48E-12,0.0E+00,0.0))
  RCONST(164) = (GC_GLYCOHA(8.00E-12,0.0E+00,0.0))
  RCONST(165) = (GC_GLYCOHB(8.00E-12,0.0E+00,0.0))
  RCONST(166) = (GCARR(4.59E-13,0.0E+00,-1156.0))
  RCONST(167) = (GCARR(3.10E-12,0.0E+00,340.0))
  RCONST(168) = (GCARR(1.50E-11,0.0E+00,0.0))
  RCONST(169) = (GC_GLYXNO3(1.40E-12,0.0E+00,-1860.0))
  RCONST(170) = (GCARR(3.36E-12,0.0E+00,-1860.0))
  RCONST(171) = (GCARR(3.00E-11,0.0E+00,360.0))
  RCONST(172) = (GCARR(2.70E-12,0.0E+00,580.0))
  RCONST(173) = (GCARR(9.60E-12,0.0E+00,360.0))
  RCONST(174) = (GC_HACOHA(2.15E-12,0.0E+00,305.0))
  RCONST(175) = (GC_HACOHB(2.15E-12,0.0E+00,305.0))
  RCONST(176) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(177) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(178) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(179) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(180) = (GCARR(1.00E-14,0.0E+00,-1970.0))
  RCONST(181) = (GCARR(8.5E-16,0.0E+00,-1520.0))
  RCONST(182) = (GCARR(1.50E-15,0.0E+00,-2110.0))
  RCONST(183) = (GCARR(3.50E-12,0.0E+00,-450.0))
  RCONST(184) = (GCARR(3.40E-15,0.0E+00,0.0))
  RCONST(185) = (GCARR(1.50E-12,0.0E+00,-1815.0))
  RCONST(186) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(187) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(188) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(189) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(190) = (GCARR(1.90E-11,0.0E+00,390.0))
  RCONST(191) = (GCARR(5.18E-12,0.0E+00,200.0))
  RCONST(192) = (GCARR(8.78E-12,0.0E+00,200.0))
  RCONST(193) = (GCARR(5.18E-12,0.0E+00,200.0))
  RCONST(194) = (GCARR(5.18E-12,0.0E+00,200.0))
  RCONST(195) = (GCARR(8.78E-12,0.0E+00,200.0))
  RCONST(196) = (GCARR(8.78E-12,0.0E+00,200.0))
  RCONST(197) = (GCARR(6.13E-13,0.0E+00,200.0))
  RCONST(198) = (GCARR(8.78E-12,0.0E+00,200.0))
  RCONST(199) = (GCARR(6.13E-12,0.0E+00,200.0))
  RCONST(200) = (GCARR(4.14E-12,0.0E+00,200.0))
  RCONST(201) = (GCARR(5.11E-12,0.0E+00,200.0))
  RCONST(202) = (GCARR(1.70E-11,0.0E+00,390.0))
  RCONST(203) = (GCARR(2.97E-11,0.0E+00,390.0))
  RCONST(204) = (GCARR(2.92E-11,0.0E+00,390.0))
  RCONST(205) = (GCARR(4.82E-11,0.0E+00,-400.0))
  RCONST(206) = (GCARR(3.73E-11,0.0E+00,-400.0))
  RCONST(207) = (GCARR(5.79E-11,0.0E+00,-400.0))
  RCONST(208) = (GCARR(3.20E-11,0.0E+00,-400.0))
  RCONST(209) = (GCARR(2.06E-13,0.0E+00,1300.0))
  RCONST(210) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(211) = (GCARR(5.31E-12,0.0E+00,200.0))
  RCONST(212) = (GCARR(8.78E-12,0.0E+00,200.0))
  RCONST(213) = (GCARR(1.84E-12,0.0E+00,200.0))
  RCONST(214) = (GCARR(4.40E-12,0.0E+00,380.0))
  RCONST(215) = (GCARR(6.13E-13,0.0E+00,200.0))
  RCONST(216) = (GCARR(3.60E-12,0.0E+00,380.0))
  RCONST(217) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(218) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(219) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(220) = (GCARR(8.37E-14,0.0E+00,0.0))
  RCONST(221) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,4.0,0.0,0.0))
  RCONST(222) = (GC_RO2NO('B',2.70E-12,0.0E+00,350.0,4.0,0.0,0.0))
  RCONST(223) = (GC_RO2NO('A',2.70E-12,0.0E+00,350.0,4.0,0.0,0.0))
  RCONST(224) = (GCARR(6.13E-13,0.0E+00,200.0))
  RCONST(225) = (GCARR(1.40E-18,0.0E+00,0.0))
  RCONST(226) = (GCARR(6.16E-15,0.0E+00,-1814.0))
  RCONST(227) = (GCARR(2.50E-12,0.0E+00,500.0))
  RCONST(228) = (GCARR(1.80E-12,0.0E+00,500.0))
  RCONST(229) = (GCARR(2.00E-13,0.0E+00,500.0))
  RCONST(230) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(231) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(232) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(233) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(234) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(235) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(236) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(237) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(238) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(239) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(240) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(241) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(242) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(243) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(244) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(245) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(246) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(247) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(248) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(249) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(250) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(251) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(252) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(253) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(254) = (GCARR(1.68E-12,0.0E+00,500.0))
  RCONST(255) = (GCARR(1.87E-13,0.0E+00,500.0))
  RCONST(256) = (GCARR(2.50E-12,0.0E+00,500.0))
  RCONST(257) = (GCARR(2.50E-12,0.0E+00,500.0))
  RCONST(258) = (GCARR(3.70E-19,0.0E+00,0.0))
  RCONST(259) = (GCARR(2.90E-17,0.0E+00,0.0))
  RCONST(260) = (GCARR(3.35E-11,0.0E+00,380.0))
  RCONST(261) = (GC_RO2NO('B',2.70E-12,0.0E+00,350.0,5.0,0.0,0.0))
  RCONST(262) = (GC_RO2NO('A',2.70E-12,0.0E+00,350.0,5.0,0.0,0.0))
  RCONST(263) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,5.0,0.0,0.0))
  RCONST(264) = (GCARR(1.20E-11,0.0E+00,652.0))
  RCONST(265) = (GCARR(2.40E-12,0.0E+00,745.0))
  RCONST(266) = (GCARR(2.40E-12,0.0E+00,360.0))
  RCONST(267) = (GCARR(8.70E-14,0.0E+00,1650.0))
  RCONST(268) = (GCARR(2.40E-12,0.0E+00,360.0))
  RCONST(269) = (GCARR(8.70E-14,0.0E+00,1650.0))
  RCONST(270) = (GCARR(4.75E-12,0.0E+00,200.0))
  RCONST(271) = (GCARR(4.40E-13,0.0E+00,380.0))
  RCONST(272) = (GCARR(8.79E-13,0.0E+00,380.0))
  RCONST(273) = (GCARR(2.70E-12,0.0E+00,350.0))
  RCONST(274) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,4.0,0.0,0.0))
  RCONST(275) = (GCJPLPR(9.00E-28,8.9E+00,0.0,7.7E-12,0.2,0.0,0.6,0.0,0.0))
  RCONST(276) = (GCJPLEQ(9.00E-29,0.0E+00,14000.0,9.00E-28,8.9E0,0.0,7.7E-12,0.2,0.,0.6,0.,0.))
  RCONST(277) = (GCARR(2.52E-12,0.0E+00,410.0))
  RCONST(278) = (GC_RO2NO('B',2.70E-12,0.0E+00,350.0,5.0,0.0,0.0))
  RCONST(279) = (GC_RO2NO('A',2.70E-12,0.0E+00,350.0,5.0,0.0,0.0))
  RCONST(280) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,5.0,0.0,0.0))
  RCONST(281) = (GCARR(2.79E-11,0.0E+00,380.0))
  RCONST(282) = (GC_RO2NO('B',2.70E-12,0.0E+00,350.0,5.0,0.0,0.0))
  RCONST(283) = (GC_RO2NO('A',2.70E-12,0.0E+00,350.0,5.0,0.0,0.0))
  RCONST(284) = (GC_RO2HO2(2.91E-13,0.0E+00,1300.0,4.0,0.0,0.0))
  RCONST(285) = (GCARR(2.00E-17,0.0E+00,0.0))
  RCONST(286) = (GCARR(2.40E-12,0.0E+00,0.0))
  RCONST(287) = (GCARR(6.70E-13,0.0E+00,0.0))
  RCONST(288) = (GCARR(1.20E-15,0.0E+00,0.0))
  RCONST(289) = (GCARR(1.00E-14,0.0E+00,0.0))
  RCONST(290) = (GCARR(1.00E-15,0.0E+00,0.0))
  RCONST(291) = (GCARR(6.00E-18,0.0E+00,0.0))
  RCONST(292) = (GCARR(1.00E-17,0.0E+00,0.0))
  RCONST(293) = (GCARR(1.20E-15,0.0E+00,0.0))
  RCONST(294) = (GCARR(1.00E-14,0.0E+00,0.0))
  RCONST(295) = (GCARR(1.00E-15,0.0E+00,0.0))
  RCONST(296) = (GCARR(1.00E-17,0.0E+00,0.0))
  RCONST(297) = (GCARR(6.00E-18,0.0E+00,0.0))
  RCONST(298) = (GCARR(1.20E-15,0.0E+00,0.0))
  RCONST(299) = (GCARR(1.00E-14,0.0E+00,0.0))
  RCONST(300) = (GCARR(1.00E-15,0.0E+00,0.0))
  RCONST(301) = (GCARR(6.00E-18,0.0E+00,0.0))
  RCONST(302) = (GCARR(1.20E-15,0.0E+00,0.0))
  RCONST(303) = (GCARR(1.00E-14,0.0E+00,0.0))
  RCONST(304) = (GCARR(1.00E-15,0.0E+00,0.0))
  RCONST(305) = (GCARR(6.00E-18,0.0E+00,0.0))
  RCONST(306) = (GCARR(1.20E-15,0.0E+00,0.0))
  RCONST(307) = (GCARR(1.00E-14,0.0E+00,0.0))
  RCONST(308) = (GCARR(1.00E-15,0.0E+00,0.0))
  RCONST(309) = (GCARR(1.00E-17,0.0E+00,0.0))
  RCONST(310) = (GCARR(6.00E-18,0.0E+00,0.0))
  RCONST(311) = (GCARR(1.20E-15,0.0E+00,0.0))
  RCONST(312) = (GCARR(1.00E-14,0.0E+00,0.0))
  RCONST(313) = (GCARR(1.00E-15,0.0E+00,0.0))
  RCONST(314) = (GCARR(6.00E-18,0.0E+00,0.0))
  RCONST(315) = (GCARR(1.00E-17,0.0E+00,0.0))
  RCONST(316) = (GCARR(1.20E-15,0.0E+00,0.0))
  RCONST(317) = (GCARR(1.00E-14,0.0E+00,0.0))
  RCONST(318) = (GCARR(1.00E-15,0.0E+00,0.0))
  RCONST(319) = (GCARR(6.00E-18,0.0E+00,0.0))
  RCONST(320) = (GCARR(1.00E-17,0.0E+00,0.0))
  RCONST(321) = (GCARR(1.40E-11,0.0E+00,0.0))
  RCONST(322) = (GCARR(5.10E-11,0.0E+00,0.0))
  RCONST(323) = (GCARR(2.70E-12,0.0E+00,360.0))
  RCONST(324) = (GCARR(2.70E-12,0.0E+00,360.0))
  RCONST(325) = (GCARR(2.05E-13,0.0E+00,1300.0))
  RCONST(326) = (GCARR(2.05E-13,0.0E+00,1300.0))
  RCONST(327) = (GCARR(2.90E+07,0.0E+00,-5300.0))
  RCONST(328) = (GCARR(1.28E+07,0.0E+00,-5300.0))
  RCONST(329) = (SUN*6.4E-6)
  RCONST(330) = (SUN*1.0E-6)
  RCONST(331) = (SUN*3.0E-5)
  RCONST(332) = (SUN*1.13E-6*0.8)
  RCONST(333) = (SUN*1.13E-6*0.2)
  RCONST(334) = (SUN*6.08E-6)
  RCONST(335) = (SUN*1.67E-5)
  RCONST(336) = (SUN*8.46E-5)
  RCONST(337) = (SUN*8.61E-6)
  RCONST(338) = (SUN*3.71E-5)
  RCONST(339) = (SUN*3.1E-3)
  RCONST(340) = (SUN*6.08E-6*0.6)
  RCONST(341) = (SUN*6.08E-6*0.2)
  RCONST(342) = (SUN*6.08E-6*0.2)
  RCONST(343) = (SUN*1.96E-6)
  RCONST(344) = (SUN*2.88E-6)
  RCONST(345) = (SUN*7.85E-6)
  RCONST(346) = (SUN*7.85E-6)
  RCONST(347) = (SUN*3.0E-5)
  RCONST(348) = (SUN*3.0E-5)
  RCONST(349) = (SUN*3.0E-5)
  RCONST(350) = (SUN*3.0E-5)
  RCONST(351) = (SUN*3.0E-5)
  RCONST(352) = (SUN*3.0E-5)
  RCONST(353) = (SUN*6.5E-6)
  RCONST(354) = (SUN*6.5E-6)
  RCONST(355) = (SUN*6.5E-6)
  RCONST(356) = (SUN*3.65E-5)
  RCONST(357) = (SUN*5.0E-6)
  RCONST(358) = (SUN*3.0E-5)
  RCONST(359) = (SUN*3.0E-5)
  RCONST(360) = (SUN*3.0E-5)
  RCONST(361) = (SUN*8.44E-6)
  RCONST(362) = (SUN*3.0E-5)
  RCONST(363) = (SUN*6.46E-5)
  RCONST(364) = (SUN*6.46E-5)
  RCONST(365) = (SUN*6.46E-5)
  RCONST(366) = (SUN*6.46E-5)
  RCONST(367) = (SUN*8.44E-6)
  RCONST(368) = (SUN*6.49E-6)
  RCONST(369) = (SUN*1.0E-6)
  RCONST(370) = (SUN*8.44E-6)
  RCONST(371) = (SUN*1.96E-6)
  RCONST(372) = (SUN*1.96E-6)
  RCONST(373) = (SUN*1.96E-6)
  RCONST(374) = (GCARR(1.81E-12,0.0E+00,354.0))
  RCONST(375) = (GCARR(2.3E-12,0.0E+00,-193.0))
! RCONST(376) = constant rate coefficient
  RCONST(377) = (GCARR(4.3E-13,0.0E+00,1040.0))
  RCONST(378) = (GCARR(7.5E-12,0.0E+00,290.0))
  RCONST(379) = (GCARR(7.5E-13,0.0E+00,700.0))
  RCONST(380) = (GCARR(2.6E-12,0.0E+00,365.0))
  RCONST(381) = (GCARR(3.8E-12,0.0E+00,200.0))
  RCONST(382) = (GCARR(5.9E-12,0.0E+00,225.0))
  RCONST(383) = (GCARR(7.5E-13,0.0E+00,700.0))
  RCONST(384) = (GCARR(3.8E-12,0.0E+00,200.0))
  RCONST(385) = (GCARR(2.6E-12,0.0E+00,365.0))
  RCONST(386) = (GCARR(7.5E-13,0.0E+00,700.0))
  RCONST(387) = (GCARR(2.6E-12,0.0E+00,365.0))
  RCONST(388) = (GCARR(3.8E-12,0.0E+00,200.0))
! RCONST(389) = constant rate coefficient
  RCONST(390) = (GCARR(4.3E-13,0.0E+00,1040.0))
  RCONST(391) = (GCARR(7.5E-12,0.0E+00,290.0))
  RCONST(392) = (PAN(3.28E-28,0.,-6.87,1.125E-11,0.,-1.105,0.3))
  RCONST(393) = (GCARR(4.3E-13,0.0E+00,1040.0))
  RCONST(394) = (GCARR(7.5E-12,0.0E+00,290.0))
  RCONST(395) = (PAN(3.28E-28,0.,-6.87,1.125E-11,0.,-1.105,0.3))
  RCONST(396) = (GCARR(4.3E-13,0.0E+00,1040.0))
  RCONST(397) = (GCARR(7.5E-12,0.0E+00,290.0))
  RCONST(398) = (PAN(3.28E-28,0.,-6.87,1.125E-11,0.,-1.105,0.3))
  RCONST(399) = (GCARR(7.5E-13,0.0E+00,700.0))
  RCONST(400) = (GCARR(2.6E-12,0.0E+00,365.0))
  RCONST(401) = (GCARR(4.7E-13,0.0E+00,1220.0))
! RCONST(402) = constant rate coefficient
! RCONST(403) = constant rate coefficient
  RCONST(404) = (GCARR(3.8E-12,0.0E+00,200.0))
  RCONST(405) = (PAN(3.28E-28,0.,-6.87,1.125E-11,0.,-1.105,0.3))
  RCONST(406) = (GCARR(7.5E-13,0.0E+00,700.0))
  RCONST(407) = (GCARR(2.6E-12,0.0E+00,365.0))
  RCONST(408) = (GCARR(3.8E-12,0.0E+00,200.0))
  RCONST(409) = (PAN(1.10E-5,-10100.,0.,1.90E+17,-14100.,0.,0.3)*0.67)
  RCONST(410) = (GCARR(7.5E-13,0.0E+00,700.0))
  RCONST(411) = (GCARR(2.6E-12,0.0E+00,365.0))
  RCONST(412) = (GCARR(3.8E-12,0.0E+00,200.0))
  RCONST(413) = (GCARR(7.5E-13,0.0E+00,700.0))
  RCONST(414) = (GCARR(2.6E-12,0.0E+00,365.0))
! RCONST(415) = constant rate coefficient
  RCONST(416) = (GCARR(3.8E-12,0.0E+00,200.0))
  RCONST(417) = (SUN*6.5E-6)
  RCONST(418) = (SUN*1.2E-3)
  RCONST(419) = (SUN*1.78E-3)
  RCONST(420) = (SUN*1.78E-3)
  RCONST(421) = (SUN*5.34E-5)
  RCONST(422) = (SUN*6.5E-6)
  RCONST(423) = (SUN*6.5E-6)
  RCONST(424) = (SUN*6.5E-6)
  RCONST(425) = (SUN*8.9E-4)
  RCONST(426) = (SUN*8.9E-4)
  RCONST(427) = (SUN*6.5E-6)
  RCONST(428) = (SUN*6.5E-6)
  RCONST(429) = (SUN*6.5E-6)
      
END SUBROUTINE Update_RCONST

! End of Update_RCONST function
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! 
! Update_PHOTO - function to update photolytical rate constants
!   Arguments :
! 
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SUBROUTINE Update_PHOTO ( )


   USE aromatics_kpp_Global

      
END SUBROUTINE Update_PHOTO

! End of Update_PHOTO function
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



END MODULE aromatics_kpp_Rates

